package com.mgurov.vspam.model;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: MGurov
 * Date: 04.04.14
 * Time: 15:43
 * To change this template use File | Settings | File Templates.
 */
public class Processor {

    private VAccount currentAccount=null;

    private List<VAccount> accounts = null; //todo

    public void sendPublicationsToGroupWalls() {




        List<VGroup> groups = null; //todo

        List<Advertisement> messages = null;


        for (Advertisement message : messages)
        {
            for (VGroup group : groups) {

                VAccount accountForGroup = findNextAccountForGroup(group);

                if (accountForGroup!=null)
                {
                    //todo паблиш сообщения
                }
                else
                {
                    System.out.println("sorry, can't publish message on this group");
                }

            }


        }

        for (VAccount account : accounts) {

            //логинимся.

            //получаем группы аккаунта.

            for (VGroup group : groups) {


            }
            //публикуем сообщение в каждой группе.

            //говорим маркируем что сообщение в этой группе поставлено.
        }
    }

    //при отправке каждого сообщения в группу пытаемся рандомизировать пользователей.

    private VAccount findNextAccount()
    {
        if (currentAccount==null)
        {
            currentAccount = accounts.get(0);
        }
        else
        {
            int index =accounts.indexOf(currentAccount);

            if (index+1<accounts.size())//не последний
            {
                currentAccount=accounts.get(index+1);
            }
            else
            {
                currentAccount = accounts.get(0);
            }
        }

        return currentAccount;
    }

    private VAccount findNextAccountForGroup(VGroup group)
    {
        VAccount current = currentAccount;
        VAccount account;
        do
        {
             account = findNextAccount();

            if (thisAccountHaveAccessToGroupWall(account, group))
            {
                return account;
            }

        }
        while(account!=current); //пока не прошел полный цикл
        return null;
    }


    private boolean thisAccountHaveAccessToGroupWall(VAccount account, VGroup group) {

        //todo check

        return false;
    }
}
